Skip to content

现代 C++ 系列导言

历版本更新历史

C++ 语言在过去的几十年中进行了多次演化,在尤其是 C++ 11 标准后,其增加了包括智能指针、多线程、反射等一系列现代的语言特性和库。本系列文章将分模块讲解从 C++11 到 C++26 标准中新增的主要特性。

C++11 标准提出于 2011 年,通常被认为是现代 C++ 的起点。其将这门语言由 C 的超集演化为拥有众多现代特性和实用函数的全新语言。其引入了 decltype 类型推导和 auto,范围 for、lambda 和移动语义、面向对象现代特性和包括智能指针、线程、新型容器在内的标准库。

C++14 标准针对 C++11 标准进行细节打磨,补全了在 C++11 中部分新增特性的细节处理,包括新的智能指针类型、更加通用的 constexpr 等。

C++17 标准增加了一系列”语法糖”,其使得利用这门语言进行开发在语法上更为自然简洁,包括 auto [a, b] if constexpr 等。同时,其开始试验性的引入函数式编程元素,包括 std::optional 等,以及零拷贝字符串视图、filesystem 操作等。这一版使得按照标准和良好习惯编写的 C++ 代码质量有所提升。

C++20 是又一个新的大版本。其在语言能力上进行了全面升级,引入了协程、模块化和一系列新的语言特性,比如 concepts 、三路比较运算符等。协程是 C++20 最重要的特性,但裸协程写起来复杂,直到 C++23 的 std::generator 才变得日常可用。

C++23 与 C++14 定位类似,均是对于上一大版本(C++20)的补丁和改进。其提出了更为完善的错误处理、多维数组视图、各种生成器和编译期编程等,补齐了相关短板。

C++26 是目前最新的 C++ 标准,其添加了众人所盼的反射、完善的契约、全新的容器和更强的原子操作。

建议阅读顺序

本系列文章原则上并没有阅读顺序,但是建议按照笔者的编写顺序进行阅读:

  1. 现代 C++ 系列导言
  2. RAII 与资源管理
  3. 移动语义
  4. 智能指针
  5. 错误处理
  6. 函数式思想
  7. 类型安全
  8. 多线程与任务编排
  9. 原子操作与内存序
  10. 模板与编译期编程

Released under MIT License